//
//  NSDate+Extension.swift
//  ShangHaiWeiBo
//
//  Created by 蔡杰 on 16/3/1.
//  Copyright © 2016年 蔡杰. All rights reserved.
//

import Foundation

private let cj_sharedDateFormatter = NSDateFormatter()

private let cj_sharedCalendar = NSCalendar.currentCalendar()

extension NSDate {

    class func cj_sinaDate(create_at: String?) -> NSDate? {
        
        guard let create_at = create_at else {
            return nil
        }
        
        cj_sharedDateFormatter.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        // 注意：一定要设置区域，如果不设置，模拟器工作正常，真机无法正常计算
        cj_sharedDateFormatter.locale = NSLocale(localeIdentifier: "en")
        
        // 转换结果
        return cj_sharedDateFormatter.dateFromString(create_at)
    }
    var cz_dateDescription: String {
        
        // 1. 判断是否是今天
        if cj_sharedCalendar.isDateInToday(self) {
            
            // 计算当前系统时间和 self 之间的时间差值
            let delta = Int(NSDate().timeIntervalSinceDate(self))
            
            if delta < 60 {
                return "刚刚"
            }
            if delta < 60 * 60 {
                return "\(delta / 60) 分钟前"
            }
            
            return "\(delta / 3600) 小时前"
        }
        
        // 2. 判断是否是昨天
        /**
        1> 在 iOS 开发中，如果设计日期转换，首先考虑 calendar
        2> components方法，可以指定任意的日期组件，查询日期
        Swift 写法 [.Year, .Month, .Day]
        OC 写法 NSCalendarUnitYear | NSCalendarUnitMonth
        
        coms = cz_sharedCalendar.components([.Year, .Month, .Day], fromDate: self)
        */
        var format = " HH:mm"
        if cj_sharedCalendar.isDateInYesterday(self) {
            format = "昨天" + format
        } else {
            format = "MM-dd" + format
            
            let year = cj_sharedCalendar.component(.Year, fromDate: self)
            let thisYear = cj_sharedCalendar.component(.Year, fromDate: NSDate())
            
            if year != thisYear {
                format = "yyyy-" + format
            }
        }
        
        // 转换日期
        cj_sharedDateFormatter.dateFormat = format
        cj_sharedDateFormatter.locale = NSLocale(localeIdentifier: "en")
        
        return cj_sharedDateFormatter.stringFromDate(self)
    }

}